A software-defined network (SDN) is an adaptable architecture for a network in which data routing decisions are decoupled from the particular network nodes that perform the data transfers. The network nodes of the SDN responsible for making decisions about data routing form the “control plane.” The network nodes of the SDN responsible for forwarding the data form the “data plane.” An abstraction layer is typically included through which the SDN may be administered. The abstraction layer hides lower level functionality and details of the underlying network infrastructure. As such, SDNs are highly adaptable. For example, a network administrator may directly program aspects of the SDN including, but not limited to, network control, network configuration, and otherwise centrally manage the SDN.
An SDN controller is the network node tasked with determining a route path for data packets of a “flow.” The SDN controller is part of the control plane of the SDN. The route path determined by the SDN controller specifies the particular network nodes and ordering of such network nodes through which data packets of a given flow will pass when communicated from a start node to an end node of the flow. The SDN controller is tasked with communicating the route path for the flow to each of the network nodes of the route path. As such, control information is kept within the control plane as a series of communications that occur between the SDN controller and each network node of the route path for the flow. Responsive to receiving route path information for a flow from the SDN controller, each recipient network node updates an internal flow table with the instructions received from the SDN controller. The instructions specify how the recipient network nodes are to process data packets belonging to the flow.
When the start node receives instructions from the controller, the start node begins sending data packets of the flow over the data plane of the SDN to the next network node specified in the route path. In general, control plane communications refer to the exchange of control information between the SDN controller and a data forwarding node, between the SDN controller and a start node, or between the SDN controller and the end node. Data plane communications refer to the exchange of data for a flow between start node and a forwarding node, between two forwarding nodes, or between a forwarding node and the end node.
In some cases, data packets of the flow may be received by a network node, e.g., a forwarding node, prior to that network node receiving instructions from the SDN controller indicating how to process the data packets. Any of a variety of different errors and/or delays may occur in such a situation including, for example, data packets arriving at the end node out of order. The SDN architecture does not guarantee consistent handling of data packets belonging to a same flow.